home *** CD-ROM | disk | FTP | other *** search
- #ifndef HoldSigs
-
- #ifndef stdTypes_h
- #include "Kernel/h/stdTypes.h"
- #endif stdTypes_h
- #ifndef NSIG
- #include <signal.h>
- #endif
-
- #define MAXTASKQ 100 /* Max number of events that can be queued */
-
- /*
- * HoldSigs, ReleaseSigs
- *
- * Prevents signal handlers from being called. Signals will be queued
- * up until ReleaseSigs is called. These are macros, and you must
- * #include ~eden/Source/ProcessA/Events.h to get them.
- *
- * 7/18/88 cjeffery - HoldSigs and ReleaseSigs now implemented via a
- * simple xkernel semaphore around critical regions. Someday this can
- * be greatly optimized (separate critical regions can use separate
- * semaphores, and the emerald code could be query replaced!).
- */
-
- #ifdef xkernel
- #define HoldSigs() holdsigs()
- #define ReleaseSigs() releasesigs()
- #else
- #define HoldSigs() SigsHeld = 1
- #define ReleaseSigs() if (SigsHeld = Pending) ReleaseSigs1()
- #endif xkernel
- extern void ReleaseSigs1();
- /*
- * TaskDequeue, TaskEnqueue
- *
- * This is just dequeue coerced into a pointer to a TaskQueue struct.
- */
-
- #define TaskDequeue(x) (struct TaskQueue *) dequeue((struct Queue *) x)
- #define TaskEnqueue(head,elem) enqueue((struct Queue *) head, \
- (struct Queue *) elem)
-
- extern int NodeNumber;
- extern int SigsHeld; /* 1 iff signals are to be held. */
- extern int RealSigHandler();
- extern int DebugLevel; /* Level of debugging output */
- extern int IamProcessB; /* I am process B (as opposed to A) */
-
- extern struct TaskQueue {
- struct Queue queue;
- int (*handler)();
- char *arg;
- } FreeQ, TaskQ, TaskArray[MAXTASKQ];
-
- /*
- * SigTable: An array of structs, one entry for each signal. For
- * each signal there is a handler and a count of how many times this
- * signal has occured but not been handled yet.
- * Signals are counted by the real signal handler when signals are held.
- * They are handled when releasesigs is called.
- */
- extern struct SigTable {
- void (*Handler)(); /* Handler for this signal */
- int Ntimes; /* Incremented every time the signal
- occurs and signals are held; decremented
- when handler is called by ReleaseSigs1. */
- } SigTable[NSIG];
-
-
- extern int ActSig[NSIG];
- extern int ActCount;
- extern int Pending;
- extern short int shouldPause, reallyPause, dontPause;
-
- extern void initqueue(), enqueue(), remqueue();
- extern struct Queue *dequeue();
- extern Boolean queueempty();
- #endif
-